package com.ssy.lingxi.workflow.model.constant;

import java.util.Arrays;

/**
 * 任务类型枚举
 * @author 万宁
 * @version 2.0.0
 * @date 2021-04-24
 */
public enum ProcessTaskTypeEnum {

    /**
     * 虚拟任务 - 0 （当流程图为单一的内部流程时，在ExternalTaskDefinition中定义一个虚拟的根任务）
     */
    VIRTUAL_TASK(0, "虚拟任务"),

    /**
     * 任务启动 - 1
     */
    START_EVENT(1, "流程启动节点"),

    /**
     * 子流程 - 2
     */
    SUB_PROCESS(2, "子流程节点"),

    /**
     * 用户任务 - 3
     */
    USER_TASK(3, "用户任务");

    ProcessTaskTypeEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    private final Integer code;
    private final String msg;

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public static ProcessTaskTypeEnum parseInt(Integer code) {
        return Arrays.stream(ProcessTaskTypeEnum.values()).filter(e -> e.getCode().equals(code)).findFirst().orElse(null);
    }
}
